Appendix 7 - Version History, Bugs

Version History

ReWrite 0.2.6 - 23rd August, 1995.
• Some bug fixes in the compiler - the following code fragments (amoung others) failed in ReWrite 0.2.5 and have now been fixed:
  test[x,x,x] -> ;
  bitdiff[x:bool,y:bool] -> x & !y;
  getoneintersect[.a,x,.b,.c,x,.d] -> x;
• A slightly more robust compiler that aborts at the first sign of trouble.
• Some documentation fixes in Chapter 3 (Language Defintion).

ReWrite 0.2.5 - 1st August, 1995.
• Main change is to add 'full ellipsis' (unrestricted use of splice on the left hand side),
• 0 and 1 now no longer supported for false and true in boolean functions,
• some cosmetic improvements, particulary with the screen output.

ReWrite 0.2.1 - 30th June, 1995.
• Fixes a minor bug that would cause some complex conditions to fail to compile.

ReWrite 0.2 - 29th June, 1995.
• The first interleaving compiler.

ReWrite 0.1 - never released.
• only types are list and int, each rule compiled separately.

Known Bugs

These are bugs that are known, but have not reached a high enough priority to be fixed yet.

Constant operations:
  If an operation that gets optimised is used with only constants for arguments, erroneous results may be returned. For example,

4>3 returns false.

  This bug only applies if there are more than two arguments, all the arguments are constants and the operation is one of the ones marked in Appendix 2 with an '*' as 'may lead to inline code'. This will be fixed in version 0.3.

  Work around: these expressions can always be simplified before coding.